// store中间件（组件去操作的）
import axios from 'axios';
import VueCookie from 'vue-cookie';	// 缓存模块

export default{
	// 状态属性，这里设置的变量，可以在组件里面调用到
	state:{
		user:null	// 没有值，可以设置为 null
	},
	// 这个是用来修改state里面的变量值
	mutations:{
		muUser(state,data){
			// 赋值
			state.user = data;		// data是数据参数
		}
	},
	// 可以包含任意异步操作,这里可以写异步请求（axios）
	actions:{
		// 写函数
		actLogin({commit,state},login){
			// alert(1)
			axios({
				url:'/api/login',		// 这里去使用nodejs框架的mysql模块，配置代理
				method:'post',
				data:login,	// json对象
				transformRequest: [function (data) {  // 这块能让数据是以表单的形式提交
		          let ret = '';
		          for (let it in data) {
		            ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
		          }
		          return ret
		        }],
		        headers: {
		          'Content-Type': 'application/x-www-form-urlencoded'
		        }
			}).then(res=>{		// 匿名函数，res是参数
				// console.log(res);
				var data = res.data;	// 用户信息（json对象）
				var str = JSON.stringify(data);	// json对象 =》 json字符串
				if(str=='{}'){
					// 账号密码错误
					// alert('账号密码错误');		// 原生
					login.alert('账号密码错误');
					return;
				}else{
					// 记录用户信息（缓存记录，目的：判断用户有没有登录）
					VueCookie.set('user',str,{expires:'2h'})

					// 把数据 str 传回给所有组件
					commit('muUser',str);

					// 登录成功，跳转到个人中心
					login.router.push('/my');	// 切换到个人中心页面
					return;
					
				}

			}).catch(function(error){	// 这个一般可以不写

			});
		},
		actInfo({commit,state},info){
			console.log(info)
			let formdata = new FormData();
			formdata.append('email',info.user.user_email);
			formdata.append('phone',info.user.user_phone);
			formdata.append('sex',info.user.user_sex);
			formdata.append('photo',info.user.photo);
			formdata.append('uid',info.user.user_id);

			axios({
				url:'/api/editInfo',		// 这里去使用nodejs框架的mysql模块，配置代理
				method:'post',
				data:formdata,	// 传表单对象
		        headers: {
		          'Content-Type': 'application/x-www-form-urlencoded'
		        }
			}).then(res=>{		// 匿名函数，res是参数
				// console.log(res);
				// 更改值
				if(res.data.user.user_pic!=undefined){
					info.user['user_pic'] = res.data.user.user_pic
				}
				
				let str = JSON.stringify(info.user);
				VueCookie.set('user',str,{expires:'2h'})

				// 把数据 str 传回给所有组件
				commit('muUser',str);

				// 修改成功，跳转到个人中心
				info.router.push('/my');	// 切换到个人中心页面
				return;

			})
		},
	}
}